﻿using Sirenix.OdinInspector;
using UnityEngine;

namespace Core.Combat.Data
{
    /*
     * 子弹核心数据类
     * 三个核心数据
     * 分别控制子弹的不同部分
     * 发射核心：影响子弹射出时
     * 行为核心：影响子弹飞行时
     * 效果核心：影响子弹命中时
     */
    [System.Serializable]
    public class BulletCoreData
    {
    }
    
    [System.Serializable]
    public class BulletFireCoreData : BulletCoreData
    {
        /// <summary>
        /// 发射偏移角度
        /// </summary>
        public float fireDriftAngle;
        /// <summary>
        /// 发射总子弹数量
        /// </summary>
        public int fireTotalNum;
        /// <summary>
        /// 射速 fr / 60 f/m 每分钟几发
        /// </summary>
        public int fireRate;
        /// <summary>
        /// 散射角度 子弹数量 > 0才生效
        /// </summary>
        public int scatterAngle;
        /// <summary>
        /// 散射类型，随机: 0 固定: 1
        /// </summary>
        [Tooltip("随机散射: 0 固定散射: 1")]
        public int scatterType;
    }

    [System.Serializable]
    public class BulletBehaviourCoreData : BulletCoreData
    {
        #region 追踪

        /// <summary>
        /// 追踪强度
        /// </summary>
        [Title("追踪")]
        public int traceIntensity;
        public float traceRange;
        // [Range(0, 1f)]
        // public float traceResponsiveTime = 0.2f;

        #endregion

        #region 反射

        /// <summary>
        /// 反弹次数
        /// </summary>
        [Title("反弹")]
        public int reboundsNumber;

        /// <summary>
        /// 反弹衰弱强度
        /// </summary>
        // [Range(0, 1f)]
        // public float reboundAsthenia;

        #endregion

        #region 穿透
        
        /// <summary>
        /// 穿透次数
        /// </summary>
        [Title("穿透")]
        public int penetrateNumber;

        #endregion

        #region 分裂

        /// <summary>
        /// 分裂数量
        /// </summary>
        [Title("分裂")]
        public int splitNumber;
        /// <summary>
        /// 延迟分裂时间，与击中分裂冲突，如果击中分裂开启，这个将失效
        /// </summary>
        public float delaySplitTime;
        /// <summary>
        /// 是否击中后分裂
        /// </summary>
        public bool isPostHitSplit;

        #endregion
    }

    [System.Serializable]
    public class BulletEffectCoreData : BulletCoreData
    {
        
    }
}